"""
函数
"""
from typing import Union
# 当 使用 from xxx import * 时，只能导入 all 变量中的内容
__all__ = ["user_info"]


def multi_res():
    """
    多返回值示例
    """
    return 1, "hello"


def user_info(name, age, gender=1):
    """
    参数默认值，必须是最后一个参数
    :param name:
    :param age:
    :param gender:
    :return:
    """
    print(f"name: {name}, age: {age}, gender: {gender}")


# 不定长参数，默认tuple
def fun1(*args):
    print(f"args类型: {type(args)} 内容: {args}")


# 不定长参数，键值对形式。默认类型 dict
def fun2(**kwargs):
    print(f"args类型: {type(kwargs)} 内容: {kwargs}")


# 函数作为参数
def fun3(func):
    print(f"type: {type(func)}")
    func()


def fun4(compute):
    res = compute(2, 3)
    print(f"函数结果: {res}")


if __name__ == '__main__':
    x, y = multi_res()
    print(x)
    print(y)

    fun1(1, 2, "a")
    fun2(a='0', B=1)
    fun3(fun1)
    # lamda函数，只能有一行
    # lamda 传入参数: 函数体（一行代码）
    fun4(lambda m, n: m + n)
